package testjeu;

/**
 * Cryptage symétrique de YoTsumi ( modification du Cryptage de César )
 * @author YoTsumi
 */
public class Crypto {
 
    private static final int A=65;
    
    /**
     * Crypte un texte
     * @param s         La chaine à crypter
     * @param decalage  Le décalage de base
     * @return  La chaine s cryptée
     */
    public static String crypt(String s, int decalage) {
        char[] str=s.toUpperCase().toCharArray();
        for (int i=0; i<str.length; i++) {
            str[i]+=decalage+i*i;
            while (str[i]>=A+26) str[i]-=26;
        }
        return String.valueOf(str);
    }
    
    /**
     * Décrypte un texte
     * @param s         La chaine à décrypter
     * @param decalage  Le décalage de base
     * @return  la chaine s décryptée
     */ 
    public static String decrypt(String s, int decalage) {
        char[] str=s.toUpperCase().toCharArray();
        for (int i=0; i<str.length; i++) {
            str[i]-=decalage+i*i;
            while (str[i]<A) str[i]+=26;
        }
        return String.valueOf(str);        
    }
    
    
    /**
     * Fonction de test 
     * @param argv
     */
    /*public static void main(String[] argv) {
        String s = "TOFU";
        int d  = 3;
        
         s=s.toUpperCase();
        System.out.println("Chaine cryptée   : "+Crypto.crypt(s,d)+" > le décyptage donne : "+Crypto.decrypt(Crypto.crypt(s, d), d));
        System.out.println("Chaine décryptée : "+Crypto.decrypt(s,d)+" > son cryptage donne : "+Crypto.crypt(Crypto.decrypt(s, d), d));
    }*/
}
